%% Licensed to the Apache Software Foundation (ASF) under one
%% or more contributor license agreements.  See the NOTICE file
%% distributed with this work for additional information
%% regarding copyright ownership.  The ASF licenses this file
%% to you under the Apache License, Version 2.0 (the
%% "License"); you may not use this file except in compliance
%% with the License.  You may obtain a copy of the License at
%%
%%   http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing,
%% software distributed under the License is distributed on an
%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
%% KIND, either express or implied.  See the License for the
%% specific language governing permissions and limitations
%% under the License.

sequenceDiagram
    actor App
    participant Driver as AdbcStatement
    participant S1 as Server 1
    participant S2 as Server 2

    App ->> Driver: New
    App ->> Driver: SetSqlQuery
    App -->> Driver: Prepare
    loop As many times as desired
        App -->> Driver: GetParameterSchema
        App -->> Driver: Bind
        App ->> Driver: ExecutePartitions
        Driver ->> App: AdbcPartitions
        Note over App, S2: Consume the distributed result set
        par Read from server 1
            App ->> S1: ReadPartition
            S1 ->> App: ArrowArrayStream
            App -> App: consume result set
        and Read from server 2
            App ->> S2: ReadPartition
            S2 ->> App: ArrowArrayStream
            App -> App: consume result set
        end
    end
    Note over App, Driver: SetSqlQuery and repeat (if desired)
    App ->> Driver: Release
